package com.mapreduce.demo.wordcount;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import java.io.IOException;

/**
 * 实现一个mapper，用于单词统计
 * 1. 继承Mapper这个类
 */

public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
    private static IntWritable v2 = new IntWritable(1);
    private Text k2 = new Text();
    // 这里写自定义的处理逻辑
    // 在WordCount的逻辑中，业务逻辑是对输入的文本进行单词拆分，然后输出每个单词出现一次
    @Override
    protected void map(LongWritable k1, Text v1, Context context) throws IOException, InterruptedException {
        String text = v1.toString();
        String[] words = text.split("\\s+");
        // 接下来，对这个words数组，构建结果
        for (String word : words) {
            // 输出k2,v2
            // 因为java不支持多返回值，所以使用了context的方式进行输出。
            k2.set(word);
            context.write(k2, v2);
        }
    }

}
